Begin Work;
/*Ciação da Tabela TipoCerimonia*/ 
--destroi a tabela existente
drop table if exists TipoCerimonia CASCADE;
--destroi a sequencia existente
drop sequence if exists seq_pk_CodTipoCerimonia;
--Cria o Indice de alto incremento
create sequence seq_pk_CodTipoCerimonia;
--Cria tabela
create table TipoCerimonia(
	CodTipoCerimonia int not null default NextVal('seq_pk_CodTipoCerimonia'),
	Descricao	varchar(50) not null,
	Sigla		varchar(30) not null,
	constraint pk_CodTipoCerimonia primary key (CodTipoCerimonia)
	
);

/*inserção dos valores default */
insert into TipoCerimonia (Descricao,Sigla) values ('Celabrações de Batismo','Batis');
insert into TipoCerimonia (Descricao,Sigla) values ('Celabrações de Casamento','Casam');


/*Ciação da Tabela bairros*/ 
drop table if exists Bairro CASCADE;
drop sequence if exists seq_pk_CodBairro;
create sequence seq_pk_CodBairro;
create table Bairro(
	CodBairro int not null default NextVal('seq_pk_CodBairro'),
	Nome	varchar(50) not null,
	constraint pk_CodBairro primary key (CodBairro)
	
);


/*inserção dos valores default */
insert into Bairro (Nome) values ('Centro');
insert into Bairro (Nome) values ('Cohabinal');
insert into Bairro (Nome) values ('Santos Reis');
insert into Bairro (Nome) values ('Primavera');
insert into Bairro (Nome) values ('Liberdade');
insert into Bairro (Nome) values ('Monte Castelo');
insert into Bairro (Nome) values ('Jockey Club');
insert into Bairro (Nome) values ('Jardim Planalto');

/* criando tabela Cidade */
drop table if exists Cidade CASCADE;
drop sequence if exists seq_pk_CodCidade;
create sequence seq_pk_CodCidade;
create table Cidade(
	CodCidade int not null default NextVal('seq_pk_CodCidade'),
	Nome	varchar(30) not null,
	UF	char(2) not null,
	constraint pk_CodCidade primary key (CodCidade)
);

/*inserção dos valores default */
insert into Cidade (Nome,UF) values ('Parnamirim','RN');
insert into Cidade (Nome,UF) values ('SP do Potengi','RN');
insert into Cidade (Nome,UF) values ('Natal','RN');

/*Ciação da tabela Usuario*/
drop table if exists Usuario CASCADE;
create table Usuario (
	Login varchar(20) not null,
	Senha varchar(50) not null,
	Nome varchar(50) not null,
	Ativo int default 1 not null,
	DataCadastro date,
	DataInativacao date,
	constraint pk_Login primary key (Login)
);



/*Ciação da tabela TipoLivro*/
drop table if exists TipoLivro CASCADE;
drop sequence if exists seq_pk_CodTipoLivro;
create sequence seq_pk_CodTipoLivro;
create table TipoLivro(
	CodTipoLivro int not null default NextVal('seq_pk_CodTipoLivro'),
	Descricao	varchar(30) not null,
	Ativo		int default 1 not null,
	constraint pk_CodTipoLivro primary key(CodTipoLivro)	
);


/*Inserção dos valores default*/

insert into TipoLivro (Descricao,Ativo) values ('Livro de Batismo',1);
insert into TipoLivro (Descricao,Ativo) values ('Livro de Casamento',1);


/*Ciação da tabela Livro*/
drop table if exists Livro CASCADE;
drop sequence if exists seq_pk_CodLivro;
create sequence seq_pk_CodLivro;
create table Livro(
	CodLivro int not null default NextVal('seq_pk_CodLivro'),
	CodTipoLivro int not null,
	Sigla	varchar(30) not null,
	DataInicio date not null,
	DataFim date null default null,
	Estado	int default 1 not null,
	Descricao varchar(50) not null,
	constraint pk_CodLivro primary key (CodLivro),
	constraint fk_Livro_TipoLivro foreign key (CodTipoLivro) references TipoLivro(CodTipoLivro)	
);


/*Criação da tabela Comunidade*/
drop table if exists Comunidade CASCADE;
drop sequence if exists seq_pk_CodComunidade;
create sequence seq_pk_CodComunidade;
create table Comunidade(
	CodComunidade int not null default NextVal('seq_pk_CodComunidade'),
	Nome Varchar(30) not null,
	Estado int default 1 not null,
	CodBairro int not null,
	constraint pk_CodComunidade primary key (CodComunidade),
	constraint fk_Comunidade_Bairro foreign key (CodBairro) references Bairro(CodBairro)
);

/*Criação da tabela Igreja*/
drop table if exists Igreja CASCADE;
drop sequence if exists seq_pk_CodIgreja;
create sequence seq_pk_CodIgreja;
create table Igreja(
	CodIgreja int not null default NextVal('seq_pk_CodIgreja'),
	Nome Varchar(30),
	CodComunidade int not null,
	Endereco Varchar(100),
	constraint pk_CodIgreja primary key (CodIgreja),
	constraint fk_Igreja_Comunidade foreign key (CodComunidade) references Comunidade(CodComunidade)
);


/*Criação da tabela Celebrante*/
drop table if exists Celebrante CASCADE;
drop sequence if exists seq_pk_CodCelebrante;
create sequence seq_pk_CodCelebrante;
create table Celebrante(
	CodCelebrante int not null default NextVal('seq_pk_CodCelebrante'),
	Nome Varchar(50) not null,
	Ativo int not null,
	CodBairro int not null,
	Endereco Varchar(100) not null,
	Fone1 Varchar(14) not null,
	Fone2 Varchar(14) not null,
	Email Varchar(100),
	Nick Varchar(20) not null,
	constraint pk_Celebrante primary key (CodCelebrante),
	constraint fk_Celebrante_Bairro foreign key (CodBairro) references Bairro(CodBairro)
);

	
/*Criação da tabela Cerimonia*/
drop table if exists Cerimonia CASCADE;
drop sequence if exists seq_pk_CodCerimonia;
create sequence seq_pk_CodCerimonia;
create table Cerimonia(
	CodCerimonia int not null default NextVal('seq_pk_CodCerimonia'),
	Descricao Varchar(50) not null,
	DataCerimonia date not null,
	CodCelebrante int not null,
	Estado int default 1 not null,
	CodTipoCelebracao int not null,
	qtdSacramentos int not null,
	DataCadastro date not null,
	LoginUsuarioCadastro Varchar(20) not null,
	CodIgreja int not null,
	CodTipoCerimonia int not null,
	constraint pk_Cerimonia primary key (CodCerimonia),
	constraint fk_Cerimonia_Celebrante foreign key (CodCelebrante) references Celebrante(CodCelebrante),
	constraint fk_Cerimonia_TipoCerimonia foreign key (CodTipoCerimonia) references TipoCerimonia(CodTipoCerimonia),
	constraint fk_Cerimonia_Igreja foreign key (CodIgreja) references Igreja(CodIgreja),
	constraint fk_Cerimonia_LoginUsuarioCadastro foreign key (LoginUsuarioCadastro) references Usuario(Login)
);
/*CodCelebrante referencia Celebrante
CodTipoCerimonia referencia TipoCerimonia
CodIgreja referencia Igreja
LoginUsuarioCadastro Referencia Usuario*/


/*Criação da tabela Batizado*/
drop table if exists Batizado CASCADE;
drop sequence if exists seq_pk_CodBatizado;
create sequence seq_pk_CodBatizado;
create table Batizado(
	CodBatizado int not null Default NextVal('seq_pk_CodBatizado'),
	Descricao Varchar(50) not null,
	DataBatizado date not null,
	Nome Varchar(50) not null,
	NomePai Varchar(50) not null,
	NomeMae Varchar(50) not null,
	NomePadrinho Varchar(50) not null,
	NomeMadrinha Varchar(50) not null,
	Estado int not null,
	CodCerimonia int,
	CodLivro int,
	NumRegistroLivro int,
	CodCidade int not null,
	DataCadastro date not null,
	LoginUsuarioCadastro Varchar(20) not null,
	constraint pk_Batizado primary key (CodBatizado),
	constraint fk_Batizado_Cerimonia foreign key (CodCerimonia) references Cerimonia(CodCerimonia),
	constraint fk_Batizado_Livro foreign key (CodLivro) references Livro(CodLivro),
	constraint fk_Batizado_Cidade foreign key (CodCidade) references CIdade(CodCidade),
	constraint fk_Batizado_LoginUsuarioCadastro foreign key (LoginUsuarioCadastro) references Usuario(Login)
);
/*CodCerimonia Referencia Cerimonia
CodLivro Referencia Livro
CodCidade Referencia Cidade
LoginUsuarioCadastro Referencia Usuario*/


/*criação da tabela Casamento*/
drop table if exists Casamento CASCADE;
drop sequence if exists seq_pk_codCasamento;
create sequence seq_pk_codCasamento;
create table Casamento(
	CodCasamento int not null Default NextVal('seq_pk_codCasamento'),
	Esposo Varchar(50) not null,
	Esposa Varchar not null,
	Testemunha1 Varchar(50),
	Testemunha2 Varchar(50),
	Testemunha3 Varchar(50),
	Testemunha4 Varchar(50),
	CodIgreja int,
	NomePaiEsposo Varchar(50),
	NomePaiEsposa Varchar(50),
	NomeMaeEsposo Varchar(50),
	NomeMaeEsposa Varchar(50),
	DataNascEsposo date not null,
	DataNascEsposa date not null,
	DataCasamento date not null,
	Estado int default 1 not null,
	CodCerimonia int,
	CodLivro int,
	NumRegistroLivro int,
	EfeitoCivil int default 0 not null,
	LoginUsuarioCadastro Varchar(20) not null,
	DataCadastro date not null,
	constraint pk_Casamento primary key (CodCasamento),
	constraint fk_Casamento_Cerimonia foreign key (CodCerimonia) references Cerimonia(CodCerimonia),
	constraint fk_Casamento_Livro foreign key (CodLivro) references Livro(CodLivro),
	constraint fk_Casamento_LoginUsuarioCadastro foreign key (LoginUsuarioCadastro) references Usuario(Login)
);
/*CodCerimonia Referencia Cerimonia
CodLivro Referencia Livro
LoginUsuarioCadastro Referencia Usuario*/
Commit Work;
